package com.hrbxlh.dao;


import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

/**
 * -------------------------------------------------------
 * Copyright (c) 2017, 鑫联华信息科技股份有限公司
 * All rights reserved.
 * FileName：HomeworkTestDao.java
 * Description：作业试验HomeworkTestDao类,负责查询作业试验信息
 * History：
 * Date           Author               Desc
 * 2017.4.5		  xzx                 建立
 * 2017.09.19      xzx                 3.0修改
 * -------------------------------------------------------
 */

@Repository
public interface HomeworkTestDao {

	/**
	 * @description 查询某教师教的班级
	 * @param Map<String,Object> paramMap
	 * @return List classId班级id,className班级名
	 * @throws Exception
	 */
	List<Map<String,Object>> getTeaTeachClass(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某教师教的课程对应的班级的作业列表
	 * @param Map<String,Object> paramMap
	 * @return List
	 * @throws Exception
	 */
	List<Map<String,Object>> getTeaHomeworkList(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某教师教的课程对应的班级的实验列表
	 * @param Map<String,Object> paramMap
	 * @return List
	 * @throws Exception
	 */
	List<Map<String,Object>> getTeaTestList(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某教师教的课程的某班级的作业详情情况（作业管理列表内页）
	 * @param Map<String,Object> classId  courseId  chapterId
	 * @return List
	 * @throws Exception
	 */
	List<Map<String,Object>> getHomeWorkByClass(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某教师教的课程的某班级的实验详情情况（实验管理列表内页）
	 * @param Map<String,Object> paramMap
	 * @return List
	 * @throws Exception
	 */
	List<Map<String,Object>> getTestByClass(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 评价作业
	 * @param Map<String,Object> paramMap
	 * @return boolean true成功  false失败 
	 * @throws Exception
	 */
	void assessHomeworkTest(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 添加作业或实验
	 * @param Map<String,Object> paramMap
	 * @return boolean true成功  false失败 
	 * @throws Exception
	 */
	void addTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 通过学号和课程号获取此学生课程中每章节的分数
	 * @param Map<String,Object> paramMap
	 * @return List
	 * @throws Exception
	 */
	List<Map<String,Object>> getEverySourceByCourseAndSid(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某学生某课程的 总分数
	 * @param Map<String,Object> paramMap 学号  课程号
	 * @return
	 * @throws Exception
	 */
	Map<String,Object> getMyDegreeByCourse(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 为某学生某课程添加平时成绩信息
	 * @param Map<String,Object> paramMap 学号  课程号  成绩
	 * @return
	 * @throws Exception
	 */
	void addMyNormalDegree(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 为某学生修改某课程平时成绩信息
	 * @param Map<String,Object> paramMap 学号  课程号  成绩
	 * @return
	 * @throws Exception
	 */
	void saveMyNormalDegree(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询是否有这个学生与这个课程对应的信息
	 * @param Map<String,Object> paramMap 学号  课程号  成绩
	 * @return
	 * @throws Exception
	 */
	Map<String,Object> getMyNormalDegreeMessage(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某个学生某个课程对应的所有分数总和
	 * @param Map<String,Object>  学号  课程号
	 * @return
	 * @throws Exception
	 */
	Map<String,Object> getStuProfomaceGrade(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询有没有学生与课程的对应信息
	 * @param Map<String,Object>  学号  课程号
	 * @return
	 * @throws Exception
	 */
	List<Map<String,Object>> getStuReCourseExam(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 添加学生平时分数信息
	 * @param Map<String,Object>  学号  课程号 分数
	 * @return
	 * @throws Exception
	 */
	void addStuReCourseExam(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改学生平时分数信息
	 * @param Map<String,Object>  学号  课程号 分数
	 * @return
	 * @throws Exception
	 */
	void saveStuReCourseExam(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某学生在某课程某章节位置是否交过作业
	 * @param Map<String,Object>  学号  课程号 章节号
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> selectMyHomework(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改某个学生某课程某章节作业
	 * @param Map<String,Object>  学号  课程号 章节号，作业名
	 * @return
	 * @throws Exception
	 */
	void saveTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改某个学生某课程某章节实验报告文件名
	 * @param Map<String,Object>  学号  课程号 章节号，作业名
	 * @return
	 * @throws Exception
	 */
	void updateFileTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 获取某个课程某个章节的作业或实验列表
	 * @param Map<String,Object>    课程号 章节号
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> getCourseChapterTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询这个学生与这个课程的关联关系信息类型
	 * @param Map<String,Object>    
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> getRelationMark(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除某个班级下所有学生的关于这个课的作业试验信息
	 * @param Map<String,Object> 课id  班级id
	 * @return
	 * @throws Exception
	 */
	void delTaskByCourseIdAndClassId(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除这个班级下的学生的这个课的成绩
	 * @param Map<String,Object> 课id  班级id
	 * @return
	 * @throws Exception
	 */
	void delExamByClassIdAndCourseId(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除这个班级下的学生的学习历史信息，
	 * @param Map<String,Object> 课id  班级id
	 * @return
	 * @throws Exception
	 */
	void delClassStudyHistoryByCourseId(Map<String, Object> paramMap) throws Exception;

	/**3.0
	 * @description 查询某个学生，某个课，某个章节交没交过实验笔记信息
	 * @param Map<String,Object> 课id  班级id   学号
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	Map<String, Object> getStuNoteByCouAndCptNum(Map<String, Object> paramMap) throws Exception;

	/**3.0
	 * @description 添加实验笔记
	 * @param Map<String,Object> 课id  班级id   学号  笔记信息
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	void addNote(Map<String, Object> paramMap) throws Exception;

	/**3.0
	 * @description 修改实验笔记
	 * @param Map<String,Object> 课id  班级id   学号  笔记信息
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	void saveNote(Map<String, Object> paramMap) throws Exception;

	/**3.0
	 * @description 查询某个学生，某个课，某个章节数的试验笔记信息
	 * @param 学号，课程号，第几章节num
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	Map<String, Object> getNoteById(Map<String, Object> paramMap) throws Exception;

	/**3.0
	 * @description 查询这些班级下所有学生的所有作业信息
	 * @param
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	List<Map<String, Object>> getWorkByClasses(List<String> paramList) throws Exception;

	/**3.0
	 * @description 查询这些学生的所有作业信息
	 * @param 学号list
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	List<Map<String, Object>> getWorkByStuIds(List<String> paramList) throws Exception;


	/**
	 * @description 通过优良中差的数值数组与课程id,与教师工号，将task表中的已经评了的等级数字进行修改
	 * @param paramMap -> 1）levelList 优良的数组：taskFraction：文字优良文字，  taskSoruce：等级对应的分值
	 *                      2）courseId 课程id    3）stuorteaId教师id
	 * */
	void saveTaskLevelChange(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 获取某个教师教的这个课的所有学生的task中的得分总分（未结课的）
	 * @param paramMap courseId stuorteaId
	 * @return stuorteaId学号,taskSoruce分数
	 * */
	List<Map<String, Object>> getMyStuTaskSumDegree(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 通过课程id集合，删除学生的笔记信息
	 *
	 * */
	void delNoteByCourseIds(List<String> paramList) throws Exception;

	/**@description 通过学号 课程号 第几章节获取实验信息
	 *
	 */
	Map<String, Object> getMyTestDetail(Map<String, Object> map) throws Exception;

	/**
	 * @description 查询某课程，某班级，交实验或教作业的人数
	 * */
	int getSubmitNum(Map<String, Object> map) throws Exception;

	/**
	 * @description 查询是否有这个课程的作业或者实验信息
	 * @param paramMap courseId
	 * @return stuorteaId学号,taskSoruce分数
	 * */
	List<Map<String, Object>> getTaskByCourseId(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某学生保存的某课程某章节的实验信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<Map<String, Object>> getStuTestHistory(Map<String, Object> paramMap) throws Exception;


	/**
	 * @description 查询某学生保存的某课程某章节的实验信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<Map<String, Object>> getStuHomeHistory(Map<String, Object> paramMap) throws Exception;
	/**
	 * @description 添加学生保存的某课程某章节的实验信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号 chapterNum   实验内容
	 * @return
	 * */
	void addStuTestHistory(Map<String, Object> paramMap) throws Exception;
	/**
	 * @description 修改某学生保存的某课程某章节的实验信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void saveStuTestHistory(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 添加学生保存的某课程某章节的作业信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号 chapterNum   实验内容
	 * @return
	 * */
	void addStuHomeHistory(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改某学生保存的某课程某章节的作业信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void saveStuHomeHistory(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除某学生保存的某课程某章节的实验信息（保存的不是提交的）
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delStuTestHistory(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除某学生的学习记录
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delStuStudyHistory(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除学生的学习笔记
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delStuNote(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除学生做的实验
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delVmStatic(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除学生or教师的登陆记录
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delLogin(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除学生or教师的登陆记录
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delNoReleaseCourse(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 删除某学生的作业or实验报告
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	void delStuTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询某个班级下的学生id
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<String> getClassStu(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询未发布的课程
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<Integer> getNoReaseCourse(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询未发布的课程所属的章节
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<Integer> getNoReaseChapter(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询自己创建的章节
	 * @param paramMap courseId stuorteaId学号
	 * @return
	 * */
	List<Integer> getCreateChapter(Map<String, Object> paramMap) throws Exception;


	/**
	 * @description 查询某个班某个课的学生的数据信息
	 * @param paramMap courseId classId
	 * @return
	 * */
	List<Map<String, Object>> getCourseClassStuTask(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改task中的endClassId  endteacherId 通过taskId修改
	 * @param
	 * @return
	 * */
	void updateTaskEndMarkColumn(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 点击某个学生的作业评价学生作业ajax请求
	 * @param Map<String,Object>    课程号 章节号  学号  作业类型
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> getHomeworkDetailBySId(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 通过课程id及类型从数据库中查询出来所有这个类型的文件信息集合，并将文件前缀作为参数放入进行拼接
	 * @param map  {"path":路径前缀,"courseId":课程id，"downloadType":下载类型：1课件，2实验手册，3备课材料，4作业及作业答案 5视频 }
	 * @return
	 * @throws Exception
	 */
	List<Map<String,Object>> getCourseWorkFileByType(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 获取当前学生所属的所有课程（并且是当前登录人所教授的）
	 * @param map  {"stuorteaId","teaId" }
	 * @return
	 * @throws Exception
	 */
	List<Map<String,Object>> getCourseListBySIdOrTeaId(Map<String, Object> paramMap) throws Exception;



}
